"""
УПРОЩЕННАЯ МОДЕЛЬ ПЛОТНОСТИ АТМОСФЕРЫ ТИТАНА
"""

import matplotlib.pyplot as plt
import numpy as np
from scipy import interpolate

rho_atm = np.array(
    [
        0.544e-2,  # 0
        0.446e-2,
        0.356e-2,  # 10
        (0.293e-2 + 0.265e-2) / 2,
        0.216e-2,  # 20
        (0.174e-2 + 0.155e-2) / 2,
        0.123e-2,  # 30
        (0.972e-3 + 0.860e-3) / 2,
        0.673e-3,  # 40
        (0.522e-3 + 0.461e-3) / 2,
        0.358e-3,  # 50
        (0.277e-3 + 0.243e-3) / 2,
        0.183e-3,  # 60
        (0.133e-3 + 0.112e-3) / 2,
        0.827e-4,  # 70
        (0.641e-4 + 0.581e-4) / 2,
        0.479e-4,  # 80
        (0.400e-4 + 0.364e-4) / 2,
        0.317e-4,  # 90
        (0.254e-4 + 0.237e-4) / 2,
        0.222e-4,  # 100
        (0.194e-4 + 0.181e-4) / 2,
        0.160e-4,  # 110
        (0.142e-4 + 0.134e-4) / 2,
        0.118e-4,  # 120
        (0.105e-4 + 0.989e-5) / 2,
        0.875e-5,  # 130
        (0.784e-5 + 0.743e-5) / 2,
        0.665e-5,  # 140
        (0.592e-5 + 0.565e-5) / 2,
        0.506e-5,  # 150
        (0.456e-5 + 0.433e-5) / 2,
        0.390e-5,  # 160
        (0.353e-5 + 0.335e-5) / 2,
        0.303e-5,  # 170
        (0.274e-5 + 0.261e-5) / 2,
        0.236e-5,  # 180
        (0.214e-5 + 0.204e-5) / 2,
        0.185e-5,  # 190
        (0.168e-5 + 0.160e-5) / 2,
        0.146e-5,  # 200
        0.129e-5,
        0.115e-5,  # 210
        0.102e-5,
        0.913e-6,  # 220
        0.815e-6,
        0.728e-6,  # 230
        0.650e-6,
        0.582e-6,  # 240
        0.521e-6,
        0.467e-6,  # 250
        0.419e-6,
        0.376e-6,  # 260
        0.338e-6,
        0.304e-6,  # 270
        0.274e-6,
        0.246e-6,  # 280
        0.222e-6,
        0.200e-6,  # 290
        0.181e-6,
        0.163e-6,  # 300
        0.147e-6,
        0.133e-6,  # 310
        0.121e-6,
        0.109e-6,  # 320
        0.988e-7,
        0.895e-7,  # 330
        0.812e-7,
        0.736e-7,  # 340
        0.668e-7,
        0.606e-7,  # 350
        0.550e-7,
        0.500e-7,  # 360
        0.454e-7,
        0.412e-7,  # 370
        0.375e-7,
        0.341e-7,  # 380
        0.310e-7,
        0.281e-7,  # 390
        0.256e-7,
        0.233e-7,  # 400
        0.211e-7,
        0.192e-7,  # 410
        0.175e-7,
        0.159e-7,  # 420
        0.144e-7,
        0.131e-7,  # 430
        0.119e-7,
        0.108e-7,  # 440
        0.989e-8,
        0.888e-8,  # 450
        0.805e-8,
        0.729e-8,  # 460
        0.660e-8,
        0.598e-8,  # 470
        0.541e-8,
        0.489e-8,  # 480
        0.442e-8,
        0.399e-8,  # 490
        0.360e-8,
        0.324e-8,  # 500
        0.292e-8,
        0.263e-8,  # 510
        0.237e-8,
        0.213e-8,  # 520
        0.191e-8,
        0.172e-8,  # 530
        0.154e-8,
        0.138e-8,  # 540
        0.124e-8,
        0.111e-8,  # 550
        0.991e-9,
        0.886e-9,  # 560
        0.791e-9,
        0.707e-9,  # 570
        0.631e-9,
        0.564e-9,  # 580
        0.504e-9,
        0.450e-9,  # 590
        0.402e-9,
        0.359e-9,  # 600
        0.321e-9,
        0.287e-9,  # 610
        0.257e-9,
        0.230e-9,  # 620
        0.206e-9,
        0.185e-9,  # 630
        0.166e-9,
        0.149e-9,  # 640
        0.134e-9,
        0.120e-9,  # 650
        0.108e-9,
        0.973e-10,  # 660
        0.877e-10,
        0.791e-10,  # 670
        0.713e-10,
        0.644e-10,  # 680
        0.582e-10,
        0.527e-10,  # 690
        0.477e-10,
        0.432e-10,  # 700
        0.392e-10,
        0.356e-10,  # 710
        0.324e-10,
        0.294e-10,  # 720
        0.268e-10,
        0.244e-10,  # 730
        0.222e-10,
        0.203e-10,  # 740
        0.185e-10,
        0.169e-10,  # 750
        0.155e-10,
        0.142e-10,  # 760
        0.130e-10,
        0.119e-10,  # 770
        0.109e-10,
        0.100e-10,  # 780
        0.920e-11,
        0.845e-11,  # 790
        0.778e-11,
        0.716e-11,  # 800
        0.659e-11,
        0.608e-11,
        0.560e-11,
        0.517e-11,
        0.478e-11,
        0.441e-11,
        0.408e-11,
        0.377e-11,
        0.349e-11,
        0.323e-11,
        0.300e-11,
        0.278e-11,
        0.258e-11,
        0.239e-11,
        0.222e-11,
        0.206e-11,
        0.192e-11,
        0.178e-11,
        0.166e-11,
        0.154e-11,
        0.144e-11,
        0.134e-11,
        0.125e-11,
        0.116e-11,
        0.108e-11,
        0.101e-11,
        0.943e-12,
        0.880e-12,
        0.821e-12,
        0.767e-12,
        0.716e-12,
        0.669e-12,
        0.625e-12,
        0.584e-12,
        0.545e-12,
        0.510e-12,
        0.477e-12,
        0.446e-12,
        0.417e-12,
        0.390e-12,  # 1000
        0.365e-12,
        0.341e-12,
        0.320e-12,
        0.299e-12,
        0.280e-12,
        0.262e-12,
        0.246e-12,
        0.230e-12,
        0.216e-12,
        0.202e-12,
        0.190e-12,
        0.178e-12,
        0.167e-12,
        0.156e-12,
        0.147e-12,
        0.138e-12,
        0.129e-12,
        0.121e-12,
        0.114e-12,
        0.107e-12,
        0.100e-12,
        0.943e-13,
        0.886e-13,
        0.833e-13,
        0.783e-13,
        0.736e-13,
        0.692e-13,
        0.651e-13,
        0.612e-13,
        0.576e-13,
        0.542e-13,
        0.510e-13,
        0.480e-13,
        0.452e-13,
        0.426e-13,
        0.401e-13,
        0.378e-13,
        0.356e-13,
        0.335e-13,
        0.316e-13,
        0.298e-13,
        0.281e-13,
        0.265e-13,
        0.250e-13,
        0.236e-13,
        0.222e-13,
        0.210e-13,
        0.198e-13,
        0.187e-13,
        0.177e-13,
        0.167e-13,
        0.158e-13,
        0.149e-13,
        0.141e-13,
        0.133e-13,
        0.126e-13,
        0.119e-13,
        0.112e-13,
        0.106e-13,
        0.100e-13,
    ]
)


h_atm = np.linspace(0, 1300000, len(rho_atm))
rho_atm = rho_atm * 10**3  # Плотность в кг/м^3
spline = interpolate.make_interp_spline(h_atm, rho_atm)
h_spline = np.linspace(h_atm.min(), h_atm.max(), 1000)
rho_spline = spline(h_spline)

fig1, ax1 = plt.subplots()
fig1.set_facecolor("white")
plt.grid(color="gray", linestyle="dotted")
plt.plot(
    h_atm * 10 ** (-3), rho_atm, linestyle="", marker="o", markersize=1.5, color="black"
)
plt.plot(h_spline * 10 ** (-3), rho_spline, linewidth=1, color="black")
plt.title("Полученная модель плотности атмосферы Титана")
plt.xlabel("Высота, км"), plt.ylabel("Плотность, кг/м^3")

fig2, ax2 = plt.subplots()
fig2.set_facecolor("white")
plt.grid(color="gray", linestyle="dotted")
plt.plot(
    h_atm * 10 ** (-3), rho_atm, linestyle="", marker="o", markersize=1.5, color="black"
)
plt.plot(h_spline * 10 ** (-3), rho_spline, linewidth=1, color="black")
plt.title("Полученная модель плотности атмосферы Титана")
plt.yscale("log")
plt.xlabel("Высота, км"), plt.ylabel("Плотность, кг/м^3")

print()
